home *** CD-ROM | disk | FTP | other *** search
- /* card.f -- translated by f2c (version of 3 February 1990 3:36:42).
- You must link the resulting object file with the libraries:
- -lF77 -lI77 -lm -lc (in that order)
- */
-
- #include "f2c.h"
-
- /* Common Block Declarations */
-
- struct {
- integer ielmnt, isbckt, nsbckt, iunsat, nunsat, itemps, numtem, isens,
- nsens, ifour, nfour, ifield, icode, idelim, icolum, insize,
- junode, lsbkpt, numbkp, iorder, jmnode, iur, iuc, ilc, ilr,
- numoff, isr, nmoffc, iseq, iseq1, neqn, nodevs, ndiag, iswap,
- iequa, macins, lvnim1, lx0, lvn, lynl, lyu, lyl, lx1, lx2, lx3,
- lx4, lx5, lx6, lx7, ld0, ld1, ltd, imynl, imvn, lcvn, nsnod,
- nsmat, nsval, icnod, icmat, icval, loutpt, lpol, lzer, irswpf,
- irswpr, icswpf, icswpr, irpt, jcpt, irowno, jcolno, nttbr, nttar,
- lvntmp;
- } tabinf_;
-
- #define tabinf_1 tabinf_
-
- struct {
- doublereal omega, time, delta, delold[7], ag[7], vt, xni, egfet, xmu,
- sfactr;
- integer mode, modedc, icalc, initf, method, iord, maxord, noncon, iterno,
- itemno, nosolv, modac, ipiv, ivmflg, ipostp, iscrch, iofile;
- } status_;
-
- #define status_1 status_
-
- struct {
- doublereal atime, aprog[3], adate, atitle[10], defl, defw, defad, defas,
- rstats[50];
- integer iwidth, lwidth, nopage;
- } miscel_;
-
- #define miscel_1 miscel_
-
- struct {
- doublereal achar, afield[15], oldlin[15];
- integer kntrc, kntlim;
- } line_;
-
- #define line_1 line_
-
- struct {
- integer iprnta, iprntl, iprntm, iprntn, iprnto, limtim, limpts, lvlcod,
- lvltim, itl1, itl2, itl3, itl4, itl5, itl6, igoof, nogo, keof;
- } flags_;
-
- #define flags_1 flags_
-
- struct {
- doublereal twopi, xlog2, xlog10, root2, rad, boltz, charge, ctok, gmin,
- reltol, abstol, vntol, trtol, chgtol, eps0, epssil, epsox, pivtol,
- pivrel;
- } knstnt_;
-
- #define knstnt_1 knstnt_
-
- struct {
- doublereal value[200000];
- } blank_;
-
- #define blank_1 blank_
-
- /* Table of constant values */
-
- static integer c__1 = 1;
- static integer c__0 = 0;
- static integer c__50 = 50;
-
- /*< subroutine card >*/
- /* Subroutine */ int card_()
- {
- /* Initialized data */
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_41 = { {'k', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define ak (*(doublereal *)&equiv_41)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_42 = { {'u', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define au (*(doublereal *)&equiv_42)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_43 = { {'n', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define an (*(doublereal *)&equiv_43)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_44 = { {'p', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define ap (*(doublereal *)&equiv_44)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_45 = { {'e', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define ae (*(doublereal *)&equiv_45)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_46 = { {'m', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define am (*(doublereal *)&equiv_46)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_47 = { {'f', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define af (*(doublereal *)&equiv_47)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_48 = { {'t', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define at (*(doublereal *)&equiv_48)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_49 = { {'i', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define ai (*(doublereal *)&equiv_49)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_50 = { {'(', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alprn (*(doublereal *)&equiv_50)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_51 = { {')', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define arprn (*(doublereal *)&equiv_51)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_52 = { {'=', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define aequal (*(doublereal *)&equiv_52)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_53 = { {'.', 'e', 'n', 'd', ' ', ' ', ' ', ' '}, 0. };
-
- #define aend (*(doublereal *)&equiv_53)
-
- static struct {
- char e_1[80];
- doublereal e_2;
- } equiv_54 = { {'0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', '2', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', '3', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '4', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', '5', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', '6', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '7', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', '8', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', '9', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define adigit ((doublereal *)&equiv_54)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_55 = { {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define ablnk (*(doublereal *)&equiv_55)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_56 = { {'.', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define aper (*(doublereal *)&equiv_56)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_57 = { {'+', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define aplus (*(doublereal *)&equiv_57)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_58 = { {'-', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define aminus (*(doublereal *)&equiv_58)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_59 = { {'*', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define astk (*(doublereal *)&equiv_59)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_60 = { {'g', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define bg (*(doublereal *)&equiv_60)
-
-
- /* Format strings */
- static char fmt_16[] = "(\0020*error*: .end card missing\002/)";
- static char fmt_31[] = "(1x)";
- static char fmt_41[] = "(1x,10a8)";
- static char fmt_501[] = "(\0020*error*: illegal number -- scan stopped \
- at column \002,i3/)";
-
- /* System generated locals */
- integer i_1;
-
- /* Builtin functions */
- integer s_wsfe(), e_wsfe(), do_fio();
- double exp(), d_sign();
-
- /* Local variables */
- static integer idec;
- static doublereal anam;
- static integer kchr, iexp;
- extern /* Subroutine */ int move_();
- static integer i, nofld, isign, itemp;
- static doublereal xsign, xmant;
- static integer jdelim;
- #define nodplc ((integer *)&blank_1)
- #define cvalue ((complex *)&blank_1)
- static integer numfld;
- extern /* Subroutine */ int getlin_();
- extern integer nxtchr_();
- extern /* Subroutine */ int extmem_();
-
- /* Fortran I/O blocks */
- static cilist io__25 = { 0, 0, 0, fmt_16, 0 };
- static cilist io__26 = { 0, 0, 0, fmt_31, 0 };
- static cilist io__27 = { 0, 0, 0, fmt_41, 0 };
- static cilist io__38 = { 0, 0, 0, fmt_501, 0 };
- static cilist io__39 = { 0, 0, 0, fmt_41, 0 };
- static cilist io__40 = { 0, 0, 0, fmt_41, 0 };
-
-
- /*< implicit double precision (a-h,o-z) >*/
-
- /* this routine scans the input lines, storing each field into the */
- /* tables ifield, idelim, icolum, and icode. with the exception of the */
-
- /* '.end' line, card always reads the next line to check for a possible */
-
- /* continuation before it exits. */
-
- /* spice version 2g.6 sccsid=tabinf 3/15/83 */
- /*< common /tabinf/ ielmnt,isbckt,nsbckt,iunsat,nunsat,itemps,numtem, >*/
- /*< 1 isens,nsens,ifour,nfour,ifield,icode,idelim,icolum,insize, >*/
- /*< 2 junode,lsbkpt,numbkp,iorder,jmnode,iur,iuc,ilc,ilr,numoff,isr, >*/
- /*< 3 nmoffc,iseq,iseq1,neqn,nodevs,ndiag,iswap,iequa,macins,lvnim1, >*/
- /*< 4 lx0,lvn,lynl,lyu,lyl,lx1,lx2,lx3,lx4,lx5,lx6,lx7,ld0,ld1,ltd, >*/
- /*< 5 imynl,imvn,lcvn,nsnod,nsmat,nsval,icnod,icmat,icval, >*/
- /*< 6 loutpt,lpol,lzer,irswpf,irswpr,icswpf,icswpr,irpt,jcpt, >*/
- /*< 7 irowno,jcolno,nttbr,nttar,lvntmp >*/
- /* spice version 2g.6 sccsid=status 3/15/83 */
- /*< common /status/ omega,time,delta,delold(7),ag(7),vt,xni,egfet, >*/
- /*< 1 xmu,sfactr,mode,modedc,icalc,initf,method,iord,maxord,noncon, >*/
- /*< 2 iterno,itemno,nosolv,modac,ipiv,ivmflg,ipostp,iscrch,iofile >*/
- /* spice version 2g.6 sccsid=miscel 3/15/83 */
- /*< common /miscel/ atime,aprog(3),adate,atitle(10),defl,defw,defad, >*/
- /*< 1 defas,rstats(50),iwidth,lwidth,nopage >*/
- /* spice version 2g.6 sccsid=line 3/15/83 */
- /*< common /line/ achar,afield(15),oldlin(15),kntrc,kntlim >*/
- /* spice version 2g.6 sccsid=flags 3/15/83 */
- /*< common /flags/ iprnta,iprntl,iprntm,iprntn,iprnto,limtim,limpts, >*/
- /*< 1 lvlcod,lvltim,itl1,itl2,itl3,itl4,itl5,itl6,igoof,nogo,keof >*/
- /* spice version 2g.6 sccsid=knstnt 3/15/83 */
- /*< common /knstnt/ twopi,xlog2,xlog10,root2,rad,boltz,charge,ctok, >*/
- /*< 1 gmin,reltol,abstol,vntol,trtol,chgtol,eps0,epssil,epsox, >*/
- /*< 2 pivtol,pivrel >*/
- /* spice version 2g.6 sccsid=blank 3/15/83 */
- /*< common /blank/ value(200000) >*/
- /*< integer nodplc(64) >*/
- /*< complex cvalue(32) >*/
- /*< equivalence (value(1),nodplc(1),cvalue(1)) >*/
-
- /*< dimension adigit(10) >*/
- /*< data adigit / 1h0,1h1,1h2,1h3,1h4,1h5,1h6,1h7,1h8,1h9 / >*/
- /*< data ablnk,aper,aplus,aminus,astk / 1h , 1h., 1h+, 1h-, 1h* / >*/
- /*< data bg,ak,au,an,ap,ae,am,af,at /1hg,1hk,1hu,1hn,1hp,1he,1hm, >*/
- /*< 1 1hf,1ht/ >*/
- /*< data ai / 1hi / >*/
- /*< data alprn, arprn, aequal / 1h(, 1h), 1h= / >*/
- /*< data aend / 4h.end / >*/
-
- /* note: the value of the function *nxtchr* (used extensively in */
- /* this routine) is as follows: */
-
- /* <0: end-of-line */
- /* =0: delimiter found */
- /* >0: non-delimiter found */
-
- /*< numfld=0 >*/
- numfld = 0;
- /*< nofld=10 >*/
- nofld = 10;
- /*< go to 20 >*/
- goto L20;
-
- /* read next card */
-
- /*< 10 nofld=10 >*/
- L10:
- nofld = 10;
- /*< call getlin >*/
- getlin_();
- /*< if (keof.eq.0) go to 20 >*/
- if (flags_1.keof == 0) {
- goto L20;
- }
- /* ... error: unexpected end-of-file condition on input */
- /*< 15 keof=1 >*/
- L15:
- flags_1.keof = 1;
- /*< nofld=1 >*/
- nofld = 1;
- /*< numfld=0 >*/
- numfld = 0;
- /*< igoof=1 >*/
- flags_1.igoof = 1;
- /*< write (iofile,16) >*/
- io__25.ciunit = status_1.iofile;
- s_wsfe(&io__25);
- e_wsfe();
- /*< 16 format('0*error*: .end card missing'/) >*/
- /*< go to 1000 >*/
- goto L1000;
-
- /* eliminate trailing blanks rapidly */
-
- /*< 20 if (afield(nofld).ne.ablnk) go to 40 >*/
- L20:
- if (line_1.afield[nofld - 1] != ablnk) {
- goto L40;
- }
- /*< if (nofld.eq.1) go to 30 >*/
- if (nofld == 1) {
- goto L30;
- }
- /*< nofld=nofld-1 >*/
- --nofld;
- /*< go to 20 >*/
- goto L20;
- /* ... write blank card */
- /*< 30 write (iofile,31) >*/
- L30:
- io__26.ciunit = status_1.iofile;
- s_wsfe(&io__26);
- e_wsfe();
- /*< 31 format(1x) >*/
- /*< go to 10 >*/
- goto L10;
- /* ... copy the card to output listing */
- /*< 40 write (iofile,41) (afield(i),i=1,nofld) >*/
- L40:
- io__27.ciunit = status_1.iofile;
- s_wsfe(&io__27);
- i_1 = nofld;
- for (i = 1; i <= i_1; ++i) {
- do_fio(&c__1, (char *)&line_1.afield[i - 1], (ftnlen)sizeof(
- doublereal));
- }
- e_wsfe();
- /*< 41 format(1x,10a8) >*/
-
- /* initialization for new card */
-
- /*< 45 kntrc=0 >*/
- /* L45: */
- line_1.kntrc = 0;
- /*< kntlim=min0(8*nofld,iwidth) >*/
- /* Computing MAX */
- i_1 = nofld << 3;
- line_1.kntlim = min(miscel_1.iwidth,i_1);
-
- /* fetch first non-delimiter (see routine *nxtchr* for list) */
-
- /*< 50 if (nxtchr(0)) 600,50,60 >*/
- L50:
- if ((i_1 = nxtchr_(&c__0)) < 0) {
- goto L600;
- } else if (i_1 == 0) {
- goto L50;
- } else {
- goto L60;
- }
- /* ... check for comment (leading asterisk) */
- /*< 60 if (achar.eq.astk) go to 10 >*/
- L60:
- if (line_1.achar == astk) {
- goto L10;
- }
- /*< go to 100 >*/
- goto L100;
-
- /* fetch next character */
-
- /*< 70 if (nxtchr(0)) 600,80,100 >*/
- L70:
- if ((i_1 = nxtchr_(&c__0)) < 0) {
- goto L600;
- } else if (i_1 == 0) {
- goto L80;
- } else {
- goto L100;
- }
-
- /* two consecutive delimiters imply numeric zero unless the delimiter */
- /* is a blank or parenthesis. */
-
- /*< 80 if (achar.eq.ablnk) go to 70 >*/
- L80:
- if (line_1.achar == ablnk) {
- goto L70;
- }
- /*< if (achar.eq.alprn) go to 70 >*/
- if (line_1.achar == alprn) {
- goto L70;
- }
- /*< if (achar.eq.arprn) go to 70 >*/
- if (line_1.achar == arprn) {
- goto L70;
- }
- /*< if (achar.eq.aequal) go to 70 >*/
- if (line_1.achar == aequal) {
- goto L70;
- }
- /* ... check for sufficient space in storage arrays */
- /*< if (numfld.lt.insize-1) go to 90 >*/
- if (numfld < tabinf_1.insize - 1) {
- goto L90;
- }
- /*< call extmem(ifield,50) >*/
- extmem_(&tabinf_1.ifield, &c__50);
- /*< call extmem(icode,50) >*/
- extmem_(&tabinf_1.icode, &c__50);
- /*< call extmem(idelim,50) >*/
- extmem_(&tabinf_1.idelim, &c__50);
- /*< call extmem(icolum,50) >*/
- extmem_(&tabinf_1.icolum, &c__50);
- /*< insize=insize+50 >*/
- tabinf_1.insize += 50;
- /*< 90 numfld=numfld+1 >*/
- L90:
- ++numfld;
- /*< value(ifield+numfld)=0.0d0 >*/
- blank_1.value[tabinf_1.ifield + numfld - 1] = 0.;
- /*< nodplc(icode+numfld)=0 >*/
- nodplc[tabinf_1.icode + numfld - 1] = 0;
- /*< value(idelim+numfld)=achar >*/
- blank_1.value[tabinf_1.idelim + numfld - 1] = line_1.achar;
- /*< nodplc(icolum+numfld)=kntrc >*/
- nodplc[tabinf_1.icolum + numfld - 1] = line_1.kntrc;
- /*< go to 70 >*/
- goto L70;
-
- /* check for sufficient space in storage arrays */
-
- /*< 100 if (numfld.lt.insize-1) go to 110 >*/
- L100:
- if (numfld < tabinf_1.insize - 1) {
- goto L110;
- }
- /*< call extmem(ifield,50) >*/
- extmem_(&tabinf_1.ifield, &c__50);
- /*< call extmem(icode,50) >*/
- extmem_(&tabinf_1.icode, &c__50);
- /*< call extmem(idelim,50) >*/
- extmem_(&tabinf_1.idelim, &c__50);
- /*< call extmem(icolum,50) >*/
- extmem_(&tabinf_1.icolum, &c__50);
- /*< insize=insize+50 >*/
- tabinf_1.insize += 50;
-
- /* begin scan of next field */
-
- /* ... initialization */
- /*< 110 jdelim=0 >*/
- L110:
- jdelim = 0;
- /*< xsign=1.0d0 >*/
- xsign = 1.;
- /*< xmant=0.0d0 >*/
- xmant = 0.;
- /*< idec=0 >*/
- idec = 0;
- /*< iexp=0 >*/
- iexp = 0;
- /* ... check for leading plus or minus sign */
- /*< if (achar.eq.aplus) go to 210 >*/
- if (line_1.achar == aplus) {
- goto L210;
- }
- /*< if (achar.eq.aminus) go to 200 >*/
- if (line_1.achar == aminus) {
- goto L200;
- }
- /* ... finish initialization */
- /*< anam=ablnk >*/
- anam = ablnk;
- /*< kchr=1 >*/
- kchr = 1;
- /* ... an isolated period indicates that a continuation card follows */
- /*< if (achar.ne.aper) go to 120 >*/
- if (line_1.achar != aper) {
- goto L120;
- }
- /* ... alter initialization slightly if leading period found */
- /*< idec=1 >*/
- idec = 1;
- /*< iexp=-1 >*/
- iexp = -1;
- /*< anam=aper >*/
- anam = aper;
- /*< kchr=2 >*/
- kchr = 2;
- /* ... now take a look at the next character */
- /*< if (nxtchr(0)) 10,10,120 >*/
- if (nxtchr_(&c__0) <= 0) {
- goto L10;
- } else {
- goto L120;
- }
-
- /* test for number (any digit) */
-
- /*< 120 do 130 i=1,10 >*/
- L120:
- for (i = 1; i <= 10; ++i) {
- /*< if (achar.ne.adigit(i)) go to 130 >*/
- if (line_1.achar != adigit[i - 1]) {
- goto L130;
- }
- /*< xmant=dble(i-1) >*/
- xmant = (doublereal) (i - 1);
- /*< go to 210 >*/
- goto L210;
- /*< 130 continue >*/
- L130:
- ;}
-
- /* assemble name */
-
- /*< numfld=numfld+1 >*/
- ++numfld;
- /*< call move(anam,kchr,achar,1,1) >*/
- move_(&anam, &kchr, &line_1.achar, &c__1, &c__1);
- /*< kchr=kchr+1 >*/
- ++kchr;
- /*< do 150 i=kchr,8 >*/
- for (i = kchr; i <= 8; ++i) {
- /*< if (nxtchr(0)) 160,160,140 >*/
- if (nxtchr_(&c__0) <= 0) {
- goto L160;
- } else {
- goto L140;
- }
- /*< 140 call move(anam,i,achar,1,1) >*/
- L140:
- move_(&anam, &i, &line_1.achar, &c__1, &c__1);
- /*< 150 continue >*/
- /* L150: */
- }
- /*< go to 170 >*/
- goto L170;
- /*< 160 jdelim=1 >*/
- L160:
- jdelim = 1;
- /*< 170 value(ifield+numfld)=anam >*/
- L170:
- blank_1.value[tabinf_1.ifield + numfld - 1] = anam;
- /*< nodplc(icode+numfld)=1 >*/
- nodplc[tabinf_1.icode + numfld - 1] = 1;
- /*< nodplc(icolum+numfld)=kntrc >*/
- nodplc[tabinf_1.icolum + numfld - 1] = line_1.kntrc;
- /* ... no '+' format continuation possible for .end card */
- /*< if (numfld.ge.2) go to 400 >*/
- if (numfld >= 2) {
- goto L400;
- }
- /*< if (anam.ne.aend) go to 400 >*/
- if (anam != aend) {
- goto L400;
- }
- /*< nodplc(icode+numfld+1)=-1 >*/
- nodplc[tabinf_1.icode + numfld] = -1;
- /*< go to 1000 >*/
- goto L1000;
-
- /* process number */
-
- /* ... take note of leading minus sign */
- /*< 200 xsign=-1.0d0 >*/
- L200:
- xsign = -1.;
- /* ... take a look at the next character */
- /*< 210 if (nxtchr(0)) 335,335,220 >*/
- L210:
- if (nxtchr_(&c__0) <= 0) {
- goto L335;
- } else {
- goto L220;
- }
- /* ... test for digit */
- /*< 220 do 230 i=1,10 >*/
- L220:
- for (i = 1; i <= 10; ++i) {
- /*< if (achar.ne.adigit(i)) go to 230 >*/
- if (line_1.achar != adigit[i - 1]) {
- goto L230;
- }
- /*< xmant=xmant*10.0d0+dble(i-1) >*/
- xmant = xmant * 10. + (doublereal) (i - 1);
- /*< if (idec.eq.0) go to 210 >*/
- if (idec == 0) {
- goto L210;
- }
- /*< iexp=iexp-1 >*/
- --iexp;
- /*< go to 210 >*/
- goto L210;
- /*< 230 continue >*/
- L230:
- ;}
-
- /* check for decimal point */
-
- /*< if (achar.ne.aper) go to 240 >*/
- if (line_1.achar != aper) {
- goto L240;
- }
- /* ... make certain that this is the first one found */
- /*< if (idec.ne.0) go to 500 >*/
- if (idec != 0) {
- goto L500;
- }
- /*< idec=1 >*/
- idec = 1;
- /*< go to 210 >*/
- goto L210;
-
- /* test for exponent */
-
- /*< 240 if (achar.ne.ae) go to 300 >*/
- L240:
- if (line_1.achar != ae) {
- goto L300;
- }
- /*< if (nxtchr(0)) 335,335,250 >*/
- if (nxtchr_(&c__0) <= 0) {
- goto L335;
- } else {
- goto L250;
- }
- /*< 250 itemp=0 >*/
- L250:
- itemp = 0;
- /*< isign=1 >*/
- isign = 1;
- /* ... check for possible leading sign on exponent */
- /*< if (achar.eq.aplus) go to 260 >*/
- if (line_1.achar == aplus) {
- goto L260;
- }
- /*< if (achar.ne.aminus) go to 270 >*/
- if (line_1.achar != aminus) {
- goto L270;
- }
- /*< isign=-1 >*/
- isign = -1;
- /*< 260 if (nxtchr(0)) 285,285,270 >*/
- L260:
- if (nxtchr_(&c__0) <= 0) {
- goto L285;
- } else {
- goto L270;
- }
- /* ... test for digit */
- /*< 270 do 280 i=1,10 >*/
- L270:
- for (i = 1; i <= 10; ++i) {
- /*< if (achar.ne.adigit(i)) go to 280 >*/
- if (line_1.achar != adigit[i - 1]) {
- goto L280;
- }
- /*< itemp=itemp*10+i-1 >*/
- itemp = itemp * 10 + i - 1;
- /*< go to 260 >*/
- goto L260;
- /*< 280 continue >*/
- L280:
- ;}
- /*< go to 290 >*/
- goto L290;
- /*< 285 jdelim=1 >*/
- L285:
- jdelim = 1;
- /* ... correct internal exponent */
- /*< 290 iexp=iexp+isign*itemp >*/
- L290:
- iexp += isign * itemp;
- /*< go to 340 >*/
- goto L340;
-
- /* test for scale factor */
-
- /*< 300 if (achar.ne.am) go to 330 >*/
- L300:
- if (line_1.achar != am) {
- goto L330;
- }
- /* ... special check for *me* (as distinguished from *m*) */
- /*< if (nxtchr(0)) 320,320,310 >*/
- if (nxtchr_(&c__0) <= 0) {
- goto L320;
- } else {
- goto L310;
- }
- /*< 310 if (achar.ne.ae) go to 315 >*/
- L310:
- if (line_1.achar != ae) {
- goto L315;
- }
- /*< iexp=iexp+6 >*/
- iexp += 6;
- /*< go to 340 >*/
- goto L340;
- /*< 315 if (achar.ne.ai) go to 325 >*/
- L315:
- if (line_1.achar != ai) {
- goto L325;
- }
- /*< xmant=xmant*25.4d-6 >*/
- xmant *= 2.54e-5;
- /*< go to 340 >*/
- goto L340;
- /*< 320 jdelim=1 >*/
- L320:
- jdelim = 1;
- /*< 325 iexp=iexp-3 >*/
- L325:
- iexp += -3;
- /*< go to 340 >*/
- goto L340;
- /*< 330 if (achar.eq.at) iexp=iexp+12 >*/
- L330:
- if (line_1.achar == at) {
- iexp += 12;
- }
- /*< if (achar.eq.bg) iexp=iexp+9 >*/
- if (line_1.achar == bg) {
- iexp += 9;
- }
- /*< if (achar.eq.ak) iexp=iexp+3 >*/
- if (line_1.achar == ak) {
- iexp += 3;
- }
- /*< if (achar.eq.au) iexp=iexp-6 >*/
- if (line_1.achar == au) {
- iexp += -6;
- }
- /*< if (achar.eq.an) iexp=iexp-9 >*/
- if (line_1.achar == an) {
- iexp += -9;
- }
- /*< if (achar.eq.ap) iexp=iexp-12 >*/
- if (line_1.achar == ap) {
- iexp += -12;
- }
- /*< if (achar.eq.af) iexp=iexp-15 >*/
- if (line_1.achar == af) {
- iexp += -15;
- }
- /*< go to 340 >*/
- goto L340;
- /*< 335 jdelim=1 >*/
- L335:
- jdelim = 1;
-
- /* assemble the final number */
-
- /*< 340 if (xmant.eq.0.0d0) go to 350 >*/
- L340:
- if (xmant == 0.) {
- goto L350;
- }
- /*< if (iexp.eq.0) go to 350 >*/
- if (iexp == 0) {
- goto L350;
- }
- /*< if (iabs(iexp).ge.201) go to 500 >*/
- if (abs(iexp) >= 201) {
- goto L500;
- }
- /*< xmant=xmant*dexp(dble(iexp)*xlog10) >*/
- xmant *= exp((doublereal) iexp * knstnt_1.xlog10);
- /*< if (xmant.gt.1.0d+35) go to 500 >*/
- if (xmant > 1e35) {
- goto L500;
- }
- /*< if (xmant.lt.1.0d-35) go to 500 >*/
- if (xmant < 1e-35) {
- goto L500;
- }
- /*< 350 numfld=numfld+1 >*/
- L350:
- ++numfld;
- /*< value(ifield+numfld)=dsign(xmant,xsign) >*/
- blank_1.value[tabinf_1.ifield + numfld - 1] = d_sign(&xmant, &xsign);
- /*< nodplc(icode+numfld)=0 >*/
- nodplc[tabinf_1.icode + numfld - 1] = 0;
- /*< nodplc(icolum+numfld)=kntrc >*/
- nodplc[tabinf_1.icolum + numfld - 1] = line_1.kntrc;
-
- /* skip to non-blank delimiter (if necessary) */
-
- /*< 400 if (jdelim.eq.0) go to 440 >*/
- L400:
- if (jdelim == 0) {
- goto L440;
- }
- /*< 410 value(idelim+numfld)=achar >*/
- L410:
- blank_1.value[tabinf_1.idelim + numfld - 1] = line_1.achar;
- /*< if (achar.ne.ablnk) go to 70 >*/
- if (line_1.achar != ablnk) {
- goto L70;
- }
- /*< if (nxtchr(0)) 450,410,420 >*/
- if ((i_1 = nxtchr_(&c__0)) < 0) {
- goto L450;
- } else if (i_1 == 0) {
- goto L410;
- } else {
- goto L420;
- }
- /*< 420 kntrc=kntrc-1 >*/
- L420:
- --line_1.kntrc;
- /*< go to 70 >*/
- goto L70;
- /*< 440 if (nxtchr(0)) 450,410,440 >*/
- L440:
- if ((i_1 = nxtchr_(&c__0)) < 0) {
- goto L450;
- } else if (i_1 == 0) {
- goto L410;
- } else {
- goto L440;
- }
- /*< 450 value(idelim+numfld)=achar >*/
- L450:
- blank_1.value[tabinf_1.idelim + numfld - 1] = line_1.achar;
- /*< go to 600 >*/
- goto L600;
-
- /* errors */
-
- /*< 500 write (iofile,501) kntrc >*/
- L500:
- io__38.ciunit = status_1.iofile;
- s_wsfe(&io__38);
- do_fio(&c__1, (char *)&line_1.kntrc, (ftnlen)sizeof(integer));
- e_wsfe();
- /*< 501 format('0*error*: illegal number -- scan stopped at column ',i3/) >*/
- /*< igoof=1 >*/
- flags_1.igoof = 1;
- /*< numfld=numfld+1 >*/
- ++numfld;
- /*< value(ifield+numfld)=0.0d0 >*/
- blank_1.value[tabinf_1.ifield + numfld - 1] = 0.;
- /*< nodplc(icode+numfld)=0 >*/
- nodplc[tabinf_1.icode + numfld - 1] = 0;
- /*< value(idelim+numfld)=achar >*/
- blank_1.value[tabinf_1.idelim + numfld - 1] = line_1.achar;
- /*< nodplc(icolum+numfld)=kntrc >*/
- nodplc[tabinf_1.icolum + numfld - 1] = line_1.kntrc;
-
- /* finished */
-
- /*< 600 nodplc(icode+numfld+1)=-1 >*/
- L600:
- nodplc[tabinf_1.icode + numfld] = -1;
-
- /* check next line for possible continuation */
-
- /*< 610 call getlin >*/
- L610:
- getlin_();
- /*< if (keof.eq.1) go to 15 >*/
- if (flags_1.keof == 1) {
- goto L15;
- }
- /*< nofld=10 >*/
- nofld = 10;
- /*< 620 if (afield(nofld).ne.ablnk) go to 630 >*/
- L620:
- if (line_1.afield[nofld - 1] != ablnk) {
- goto L630;
- }
- /*< if (nofld.eq.1) go to 650 >*/
- if (nofld == 1) {
- goto L650;
- }
- /*< nofld=nofld-1 >*/
- --nofld;
- /*< go to 620 >*/
- goto L620;
- /*< 630 kntrc=0 >*/
- L630:
- line_1.kntrc = 0;
- /*< kntlim=min0(8*nofld,iwidth) >*/
- /* Computing MAX */
- i_1 = nofld << 3;
- line_1.kntlim = min(miscel_1.iwidth,i_1);
- /* ... continuation line has a '+' as first non-delimiter on card */
- /*< 632 if(nxtchr(0)) 650,632,634 >*/
- L632:
- if ((i_1 = nxtchr_(&c__0)) < 0) {
- goto L650;
- } else if (i_1 == 0) {
- goto L632;
- } else {
- goto L634;
- }
- /*< 634 if(achar.ne.aplus) go to 640 >*/
- L634:
- if (line_1.achar != aplus) {
- goto L640;
- }
- /*< write(iofile,41) (afield(i),i=1,nofld) >*/
- io__39.ciunit = status_1.iofile;
- s_wsfe(&io__39);
- i_1 = nofld;
- for (i = 1; i <= i_1; ++i) {
- do_fio(&c__1, (char *)&line_1.afield[i - 1], (ftnlen)sizeof(
- doublereal));
- }
- e_wsfe();
- /*< go to 70 >*/
- goto L70;
- /*< 640 if (achar.ne.astk) go to 1000 >*/
- L640:
- if (line_1.achar != astk) {
- goto L1000;
- }
- /*< 650 write (iofile,41) (afield(i),i=1,nofld) >*/
- L650:
- io__40.ciunit = status_1.iofile;
- s_wsfe(&io__40);
- i_1 = nofld;
- for (i = 1; i <= i_1; ++i) {
- do_fio(&c__1, (char *)&line_1.afield[i - 1], (ftnlen)sizeof(
- doublereal));
- }
- e_wsfe();
- /*< go to 610 >*/
- goto L610;
- /*< 1000 return >*/
- L1000:
- return 0;
- /*< end >*/
- } /* card_ */
-
- #undef cvalue
- #undef nodplc
- #undef bg
- #undef astk
- #undef aminus
- #undef aplus
- #undef aper
- #undef ablnk
- #undef adigit
- #undef aend
- #undef aequal
- #undef arprn
- #undef alprn
- #undef ai
- #undef at
- #undef af
- #undef am
- #undef ae
- #undef ap
- #undef an
- #undef au
- #undef ak
-
-
-